from flask import Flask
from flask_login import LoginManager
from app.models.book import db
from flask_mail import Mail

login_manager = LoginManager()
mail = Mail()


def create_app():
    app = Flask(__name__)
    app.config.from_object('app.secure')
    app.config.from_object('app.setting')
    register_blueprint(app)

    # 将db和flask核心对象关联起来
    db.init_app(app)
    login_manager.init_app(app)
    # 告诉flask哪个才是我们的登录视图函数
    # 当用户没有登录访问时，会直接跳转到登陆页面
    login_manager.login_view = 'web.login'
    login_manager.login_message = '请先登陆或注册'
    # 注册mail插件
    mail.init_app(app)

    db.create_all(app=app)
    return app


# web蓝图注册在app核心对象上
def register_blueprint(app):
    from app.web.book import web
    app.register_blueprint(web)
